Hoạt động GRUB

GNU GRUB trên một ở cứng phân vùng theo MBR; stage 1 (boot.img) một cách khác có thể được viết thành một trong những VBR.
GNU GRUB trên một ở cứng phân vùng theo GPT

Khởi động

Khi một máy tính được bật, BIOS của máy tính sẽ tìm thiết bị được cấu hình khởi động chính (thường là ổ cứng) tải và thực thi chương trình bootstrap đầu tiên từ master boot record (MBR). MBR là những sector đầu tiên của ổ cứng, với số 0 là offset của nó(các sector bắt đầu đếm từ 0). Trong một thời gian dài, kích thước của sector là 512 byte, nhưng từ năm 2009 có nhiều ổ cứng có kích thước một sector là 4096 byte, được gọi là ổ cứng Advanced Format. Tính đến tháng 10/2013, những ổ cứng như thế vẫn được truy cập những sector 512-byte, bằng cách sử dung mô phỏng 512e.[6]

Boot record MBR legacy hỗ trợ tối đa 4 phân vùng primary và chiếm 64 byte. Cùng với tùy chọn chữ ký đĩa (4 byte) và nhãn đĩa (6 byte), chuỗi dữ liệu này chiếm từ 434 đến 446 byte mã máy của boot loader. Mặc dù một kích thước nhỏ có thể chứa đủ một boot loader đơn giản,[7] nó không đủ lớn để chứa một boot loader hỗ trợ một hệ thống tập tin lớn và phức tạp, menu điều khiển các lựa chọn khởi động hệ thống là ví dụ. Boot loader với footprints lớn hơn do đó được chia thành nhiều phần, nơi những phần nhỏ nhất được tích hợp bên trong MBR, trong khi những phần lớn hơn chứa trong các khu vực khác (ví dụ,trong một sector trống ở giữa MBR phân vùng đầu tiên) và được gọi đến bởi mã MBR của boot loader.

Ảnh nhân hệ điều hành trong phần lớn các trường hợp các tập tin nằm trên hệ thống tập tin thích hợp, nhưng các khái niệm về một hệ thống tập tin là không biết đến BIOS. Vì vậy,trong các hệ thống dựa trên BIOS,nhiệm vụ của boot loader là để truy cập vào nội dung của các tập tin, vì vậy nó có thể đọc từ đĩa cứng, nạp vào bộ nhớ RAM và thực hiện.

Một trong những phương pháp tiếp cận có thể cho boot loader là tải trực tiếp các ảnh của hạt nhân từ các sector ổ cứng đang sử dụng bởi hình ảnh thực tế hạt nhân, mà không có sự hiểu biết cơ bản hệ thống tập tin.  Thông thường, cấp bổ sung gián tiếp là cần thiết, ở dạng bản đồ hoặc các bản đồ tập tin – các file phụ trợ có chứa một danh sách các sector vật lý đang sử dụng bởi ảnh hạt nhân, cung cấp thông tin cho boot loader về nơi có thể tìm thấy những sector cơ sở của nhân hệ thống. Các bản đồ này cần được cập nhật mỗi lần nhân hệ thống bị thay đổi, ví dụ như nâng cấp hạt nhân hệ thống giải phân mảnh hệ thống file. Cũng như vậy, trong các trường hợp bản đồ thay đổi trên ổ đĩa vật lý, vị trí của chúng cũng cần được cập nhật vào mã MBR của boot loader, vì vậy các cơ chế khu vực gián tiếp tiếp tục làm việc. Điều này không phức tạp, nhưng nó yêu cầu phải sửa đổi bằng tay trong trường hợp bị sai trong ki cập nhật hệ thống.[8]

Một cách khác là tạo một boot loader nhận biết được hệ thống file bên dưới, Hạt nhân như vậy được cấu hình và truy cập thông qua đường dẫn thực tế. Điều này yêu cầu boot loader cần chứa một trình điều khiển hệ thống file cho mỗi hệ thống file mà nó hỗ trợ, như vậy trình khởi động sẽ có thể nhận biết và tiếp cận dữ liệu. Cách tiếp cận này cho phép loại bỏ các phần lập trình nhúng không cần thiết vào sector và cả sự cần thiết của việc phân địa chỉ tập tin, và MBR (tức Master Boot Record) sẽ không cần phải cập nhật lại mỗi khi ảnh hạt nhân hệ điều hành được thêm vào trình khởi động hoặc được gỡ ra.

GNU GRUB sử dụng phương pháp thứ hai, bằng cách tìm hiểu các hệ thống tập tin cơ bản. Boot loader tự chia thành nhiều phần, cho phép nó phù hợp với các chương trình khởi động MBR.

Có hai phiên bản của GRUB đang được sử dụng phổ biến. GRUB phiên bản 2, được gọi là GRUB 2, được viết lại từ đầu và có ý định thay thế phiên bản tiền nhiệm của nó GRUB 1, và hiện nay nó được sử dụng bởi đa số các bản phân phối Linux. GRUB phiên bản 1, được gọi là GRUB legacy,chỉ phổ biến ở các phiên bản cũ của các bản phân phối Linux, trong đó một số vẫn còn đang được sử dụng và hỗ trợ, ví dụ như trong CentOS 5.

GRUB Phiên bản 1 (GRUB legacy)

GRUB v1 hoạt động như một phần của Ubuntu 8.04

Master boot record (MBR) thường chứa GRUB giai stage 1, nhưng có thể chứa bootloader khác có thể gọi đến GRUB stage 1 từ một boot sector giống như bản ghi kích thước khởi động của phân vùng. Với kích thước nhỏ của một boot sector (512 Byte), stage 1 có thể làm ít hơn so với tải các giai đoạn tiếp theo của GRUB bằng cách tải một vài sector từ một vùng cố định  gần điểm đầu đĩa cứng (trong 1024 cylinder đầu tiên).

Stage 1 có thể tải stage 2 trực tiếp, nhưng nó thường được thiết lập để tải stage 1.5. GRUB stage 1.5 ở khu vực 30 KiB đầu tiên của ổ cứng ngay sau MBR và trước phân vùng đầu tiên. Trong trường hợp vị trí này không có sẵn(bảng phân vùng bất thường, trình điều khiển đĩa đặc biệt, đĩa GPT hoặc LVM) các cài đặt của stage 1.5 sẽ bị lỗi. Stage 1.5 chứa trình điều khiển hệ thống tập tin. điều này cho phép stage 1.5 tải trực tiếp stage 2 từ bất kỳ vị trí nào trên hệ thống file, ví dụ từ/boot/grub. Stage 2 sẽ tải file cấu hình mặc định và các module cần thiết khác.

GRUB 2 (GRUB)

boot.img có kích thước 446 byte và được ghi vào MBR (sector 0). core.img được ghi vào phần trống giữa MBR và phân vùng đầu tiên. Thư mục /boot/grub có thể được lưu trên một phân vùng riêng biệt, hoặc trên phân vùng root.
  • Stage 1: boot.img được lưu trữ trên master boot record (MBR) hoặc có thể bất kỳ vị trí nào thuộc volume boot records (VBR), và chỉ tới các stage tiếp theo bằng một địa chỉ LBA48 (vì vậy tránh được giới hạn 1024-cylinder của GRUB legacy); lúc cài đặt nó được cấu hình để tải sector đầu tiên của core.img.
  • Stage 1.5: core.img mặc định được ghi vào các sector giữa MBR và phân vùng đầu tiên, khi những sector này trống và có sẵn. Với  các phân vùng legacy, phân vùng đầu tiên của ổ cứng không bắt đầu từ sector 1 (bộ đếm bắt đầu từ 0) mà từ sector 63,để lại một khoảng trống 62 sector. không gian đó không phải là một phần của bất kỳ phân vùng hoặc tập tin hệ thống, và do đó không dễ bị bất kỳ vấn đề liên quan với nó.Mỗi khi thực thi, core.img sẽ tải file cấu hình của nó  và các module cần thiết khác, trình điều khiển hệ thống file riêng biệt; lúc cài đặt, nó được tạo ra từ diskboot.img và được cấu hình để tải stage 2 bằng đường dẫn của nó
  • Stage 2: file thuộc stage 2 đều được lưu trữ trong thư mục /boot/grub  một thư mục con của thư mục  /boot quy định bởi Filesystem Hierarchy Standard (FHS).

Tài liệu tham khảo

WikiPedia: GRUB http://www.anandtech.com/show/2888 http://distrowatch.com/table.php?distribution=ubun... http://www.extremetech.com/gaming/159476-ps4-runs-... http://www.itwire.com/business-it-news/open-source... http://www.linuxjournal.com/article/4622 http://www.oracle.com/technetwork/server-storage/s... http://dlc.sun.com/osol/docs/content/SYSADV1/getov... http://docs.sun.com/app/docs/doc/819-2379/getnk?a=... http://www.techopedia.com/definition/15777/red-hat... http://searchenterpriselinux.techtarget.com/defini...